home *** CD-ROM | disk | FTP | other *** search
/ Intel Web Outfitter Tool Kit 4 / Intel WebOutfitter Tool Kit Version 4.0.iso / public / Outfitter / TKM / scripts / lui.js < prev    next >
Encoding:
Text File  |  2000-03-13  |  12.5 KB  |  412 lines

  1. <!--//--><script language="javascript">
  2. /*
  3. File Dependencies:
  4.     objRO.js        The Request Object (ro) - This is included here to provide support for the objTI.js
  5.     objTI.js        The TKM Installer (ti)
  6.     objPC.js        The PluginChecker(2).dll Script Wrapper (pc)
  7.     objWTUI.js        The wotktoolui.dll Script Wrapper (wtui)
  8.     objII.js        The Image Info Object (ii)
  9.  
  10. Required Initialization Method:
  11.     LUI_Init        Shows the appropriate UI based on the installation status 
  12. */
  13.  
  14.  
  15. //  ####  BEGIN g_sTKMRoot DEFINITION  ####
  16. //  Start at the beginning of the location and find our document root directory
  17. var g_sHref = location.href.toLowerCase();
  18. var g_nEndPos = g_sHref.indexOf('outfitter/');
  19. //  Grab everything up to the end of the word outfitter and add "/tkm/" to set the TKM Root
  20. var g_sTKMRoot = g_sHref.substring(0, (g_nEndPos + 9)) + '/tkm/';
  21. //  Move past the "outfitter/" string and start looking for the geo/lang
  22. var g_nBeginGeo = g_nEndPos + 10;
  23. //  Find the next "/" and we have the geo/lang
  24. var g_nEndGeo = g_sHref.indexOf('/', g_nBeginGeo);
  25. //  Parse out the geo/lang so we know what to use
  26. var g_sGeo = g_sHref.substring(g_nBeginGeo, g_nEndGeo);
  27. //  ####  END g_sTKMRoot DEFINITION  ####
  28.  
  29. //  ####  BEGIN OS SNIFFER  ###
  30. var agt=navigator.userAgent.toLowerCase();
  31.  
  32. if(((agt.indexOf("win98")!=-1) || (agt.indexOf("windows 98")!=-1))) g_sOS = "win98";
  33. else if(((agt.indexOf("winnt")!=-1) || (agt.indexOf("windows nt")!=-1))) g_sOS = "win2000";
  34. //  ####  END OS SNIFFER  ###
  35.  
  36.  
  37. //  ####  BEGIN ADD DEPENDENCIES  ####
  38. document.write('<script language="javascript1.2" src="' + g_sTKMRoot + 'scripts/objRO.js">');
  39. document.write('\n<' + '/script>\n');
  40. document.write('<script language="javascript1.2" src="' + g_sTKMRoot + 'scripts/objTI.js">');
  41. document.write('\n<' + '/script>\n');
  42. document.write('<script language="javascript1.2" src="' + g_sTKMRoot + 'scripts/objPC.js">');
  43. document.write('\n<' + '/script>\n');
  44. document.write('<script language="javascript1.2" src="' + g_sTKMRoot + 'scripts/objWTUI.js">');
  45. document.write('\n<' + '/script>\n');
  46. document.write('<script language="javascript1.2" src="' + g_sTKMRoot + 'scripts/objII.js">');
  47. document.write('\n<' + '/script>\n');
  48. document.write('<script language="javascript1.2" src="' + g_sTKMRoot + 'scripts/objXP.js">');
  49. document.write('\n<' + '/script>\n');
  50. document.write('<script language="javascript1.2" src="' + g_sTKMRoot + 'scripts/objTU.js">');
  51. document.write('\n<' + '/script>\n');
  52. document.write('<script language="javascript1.2" src="' + g_sTKMRoot + 'scripts/cookie.js">');
  53. document.write('\n<' + '/script>\n');
  54. //  ####  END ADD DEPENDENCIES  ####  
  55.  
  56. function LUI()
  57. {
  58.     //  Constructor(s)
  59.     this.TOOLSET = LUI_TOOLSET;
  60.  
  61.     //  Method(s)
  62.     this.CallTKMInstall = LUI_CallTKMInstall;
  63.     this.Init = LUI_Init;
  64.     this.Poll = LUI_Poll;
  65.     this.Exit = LUI_Exit;
  66.     this.Run = LUI_Run;
  67.     this.CreateChild = LUI_CreateChild;
  68.     this.DestroyChild = LUI_DestroyChild;
  69.  
  70.     //  Constant(s)
  71.     this.MEDIUM_CD = 1;
  72.     this.MEDIUM_WEB = 2;
  73.     this.SCENARIO_EYPC = 1;
  74.     this.SCENARIO_CD = 2;
  75.     this.SCENARIO_SS = 3;
  76.     this.SCENARIO_PT = 4;
  77.     this.SCENARIO_PBB = 5;
  78.     this.GEOiXML = 1;
  79.     this.MAINiXML = 2;
  80.     this.PRODiXML = 3;
  81.  
  82.     //  Field(s)
  83.     this.exitfunc = '';                    //  The function to call when we are finished
  84.     this.arglist = '';                    //  The list of arguments to pass to the exitfunc, if any
  85.     this.toollist = '';                    //  The list of tools to call the lui.Run function with
  86.     this.scenario = 5;                    //  The scenario to pass to the WOTKToolUI.dll
  87.     this.medium = this.MEDIUM_WEB;        //  The locaiton to install from
  88.     this.childwindow = null;            //  A pointer to any childwindow that we call
  89. }
  90.  
  91.  
  92. /*  TOOLSET constructor  */
  93. function LUI_TOOLSET()
  94. {
  95.     // Constructor(s)
  96.     this.TOOL = LUI_TOOLSET_TOOL;
  97.  
  98.     // Method(s)
  99.     this.AddTool = LUI_TOOLSET_AddTool;
  100.     this.Install = LUI_TOOLSET_Install;
  101.  
  102.     // Field(s)
  103.     this.tools = new Array(0);        //  The array that holds any tools to check for, built by the AddTool method
  104. }
  105.  
  106.  
  107. /*  TOOL constructor  */
  108. function LUI_TOOLSET_TOOL(key, version)
  109. {
  110.     this.key = key;
  111.     this.version = version;
  112.     
  113.     return this;
  114. }
  115.  
  116.  
  117. function LUI_CallTKMInstall()
  118.     /*  The TKM is not installed or needs an update, so tell the TKM object to install the software  */
  119.     /*  Before we can install the TKM we need to save the state of this object so we can immediately 
  120.     launch the tool install when the TKM is finished  */
  121.     top.LUI_toollist = this.toollist;
  122.     top.LUI_exitfunc = this.exitfunc;
  123.     top.LUI_arglist = this.arglist;
  124.     top.LUI_launch = true;
  125.  
  126.     ti.Install();
  127. }
  128.  
  129.  
  130. function LUI_Run()
  131.     var isInstallRunning = false;
  132.     /*  Here we make the magic happen, call the control, get status, all that good stuff  */
  133.     if (ti.status == ti.INSTALLED)
  134.     {
  135.         var sCurrentMedium = this.MEDIUM_WEB;
  136.  
  137.         //  Check to see if the install is running from the CD
  138.         if (wtui.GetInstallMedium() == 1) sCurrentMedium = this.MEDIUM_CD;
  139.  
  140.         if (this.medium != sCurrentMedium)
  141.         {
  142.             //    73s_already_progress.gif
  143.             this.CreateChild(g_sTKMRoot + "html/already_in_progress.htm?geo=" + g_sGeo, "UserPrompt", ii.progress);
  144.         }
  145.         else
  146.         {
  147.             // Check the XML for the OS specific tools
  148.             
  149.             //var l_toollist = GetNewString(this.toollist);
  150.             //this.toollist = l_toollist;        
  151.             var nRetVal = 0;
  152.             
  153.             nRetVal = wtui.Run(this.toollist, this.medium, this.scenario);
  154.  
  155.             switch (nRetVal)
  156.             {
  157.                 case 0:  //  Nothing has happened, what should we do?
  158.                     break;
  159.                 case 1:  //  The controls are up-to-date, no install is neccesary
  160.                     this.Exit();
  161.                     break;
  162.                 case 2:  //  To late to add, what should we do?
  163.                     /*  Installation already in progress... (73s_already_progress.gif)  
  164.                     Let the user know that the installation is to far along to add these tools.  */
  165.                     this.CreateChild(g_sTKMRoot + "html/already_in_progress.htm?geo=" + g_sGeo, "UserPrompt", ii.progress);
  166.                     break;
  167.                 case 3:  //  The tools were added to the list
  168.                     setTimeout('lui.Poll()', 10000);
  169.                     break;
  170.                 case 4:  //  The installer was launched, there was nothing running
  171.                     setTimeout('lui.Poll()', 10000);
  172.                     break;
  173.                 case 5:  //  Cancel was pressed, go to site without installing
  174.                     this.Exit();
  175.                     break;
  176.                 case 6:  //  An error occurred so just go to the site
  177.                     this.Exit();
  178.                     break;
  179.                 case 7:  //  The items were already in the list of things to install
  180.                     setTimeout('lui.Poll()', 10000);
  181.                     break;
  182.             }
  183.         }
  184.     }
  185.     else if (ti.status == ti.PATCH_REQ) 
  186.     {    
  187.         if(document.layers)
  188.         {
  189.             if (pc.IsWOTKInstallerRunning()) isInstallRunning = true;
  190.         }
  191.         if(document.all)
  192.         {
  193.             if(tu.IsTKMFileInUse('WOTKINSTALLUI2.exe') == 'YES') isInstallRunning = true;
  194.         }
  195.         //if (pc.IsWOTKInstallerRunning())
  196.         if(isInstallRunning)
  197.         {
  198.             /*  74s_please_wait.gif  */
  199.             this.CreateChild(g_sTKMRoot + "html/please_wait.htm?geo=" + g_sGeo,"UserPrompt", ii.wait);
  200.         }
  201.         else this.CallTKMInstall();
  202.     }
  203.     else if (ti.status == ti.UPDATE_REQ)
  204.     {
  205.         if(document.layers)
  206.         {            
  207.             if (pc.IsWOTKInstallerRunning()) isInstallRunning = true;
  208.         }
  209.         if(document.all)
  210.         {
  211.             if(tu.IsTKMFileInUse('WOTKINSTALLUI2.exe') == 'YES') isInstallRunning = true;
  212.         }
  213.         //if (pc.IsWOTKInstallerRunning())
  214.         if(isInstallRunning)
  215.         {
  216.             /*  74s_please_wait.gif  */
  217.             this.CreateChild(g_sTKMRoot + "html/please_wait.htm?geo=" + g_sGeo,"UserPrompt", ii.wait);
  218.         }
  219.         else
  220.         {
  221.             /*  72s_update_app.gif
  222.             We have to call the CallTKMInstall before installing from the ti object or we will lose the scope of this page  */
  223.             //this.CreateChild(g_sTKMRoot + "scenarios/linkui/" + g_sGeo,"UserPrompt", ii.update);
  224.             if(!GetCookie("skipTKMInstall")) this.CreateChild(g_sTKMRoot + "scenarios/linkui/user_prompt.htm?page=update&geo=" + g_sGeo,"UserPrompt", ii.update);
  225.             else this.Exit();
  226.         }
  227.     }
  228.     else if (ti.status == ti.NOT_INSTALLED)
  229.     {
  230.         /*  70s_install_tkm.gif
  231.         We have to call the CallTKMInstall before installing from the ti object or we will lose the scope of this page  */
  232.         //this.CreateChild(g_sTKMRoot + "html/installTKM.htm?geo=" + g_sGeo,"UserPrompt", ii.install);        
  233.         if(!GetCookie("skipTKMInstall")) this.CreateChild(g_sTKMRoot + "scenarios/linkui/user_prompt.htm?page=install&geo=" + g_sGeo,"UserPrompt", ii.install);
  234.         else this.Exit();
  235.     }
  236. }
  237.  
  238.  
  239. function LUI_Poll()
  240. {
  241.     var nRetVal = 0;
  242.  
  243.     nRetVal = wtui.GetStatus();
  244.  
  245.     if (nRetVal == 0) lui.Exit();                            //  If everything is done and the dialog is completed then return to the webpage
  246.     else if (nRetVal == 4) setTimeout('lui.Poll()', 1000);    //  If the install is complete but the dialog has not been dismissed then check every one second
  247.     else setTimeout('lui.Poll()', 3000);                    //  If the download/install is still going check every three seconds
  248. }
  249.  
  250.  
  251. function LUI_Exit()
  252. {
  253.     this.DestroyChild();
  254.     setTimeout("eval(lui.exitfunc + '(' + lui.arglist + ');');", 1000);
  255. }
  256.  
  257.  
  258. function LUI_ExitInstall()
  259. {
  260.     if (ti.installed)
  261.     this.Run();
  262. }
  263.  
  264.  
  265. function LUI_TOOLSET_AddTool(key, ver0, ver1)
  266. {    
  267.     switch (LUI_TOOLSET_AddTool.arguments.length)
  268.     {
  269.         // If two arguments were passed in then this does not require separate installs for IE and NN
  270.         case 2:
  271.             this.tools[this.tools.length] = new this.TOOL(key, ver0);
  272.             break;
  273.         
  274.         // If three argument were passed in then this requires separate versions for IE and NN
  275.         case 3:
  276.             if (document.all) this.tools[this.tools.length] = new this.TOOL(key + 'IE', ver0);
  277.             else if (document.layers) this.tools[this.tools.length] = new this.TOOL(key + 'NS', ver1);
  278.             break;
  279.  
  280.         // If any other number of params is passed in then fail
  281.         default:
  282.             break;
  283.     }
  284. }
  285.  
  286.  
  287. function LUI_TOOLSET_Install(func)
  288. {    
  289.     var sToolList = '';
  290.     var sArgList = '';
  291.     var nRetVal = 0;
  292.     
  293.     /*  Build toollist from the TOOLSET's tools collection so we know what to check for  */
  294.     for (i=0; i<this.tools.length; i++)
  295.     {
  296.         sToolList += this.tools[i].key + '#' + this.tools[i].version + ';';
  297.         
  298.     }
  299.         
  300.     /*  Build the argument list for the function to call when the installation is complete  */
  301.     if (LUI_TOOLSET_Install.arguments.length > 1)
  302.     {
  303.         var arg = '';
  304.         for (i=1; i<LUI_TOOLSET_Install.arguments.length; i++)
  305.         {
  306.             arg = LUI_TOOLSET_Install.arguments[i];
  307.             // If the argument is a string preserve the data type by adding quotes around it
  308.             if (typeof arg == 'string') arg = '"' + arg + '"';
  309.             
  310.             if (i > 1) sArgList += ', ' + arg + '';
  311.             else sArgList += arg;
  312.         }
  313.     }
  314.  
  315.     /*  Set the fields for the LUI object so we know what to do when we are finished  */
  316.     lui.exitfunc = func;
  317.     lui.arglist = sArgList;
  318.     lui.toollist = sToolList;
  319.  
  320.     /*  Kick off the install  */
  321.     lui.Run();
  322. }
  323.  
  324. function LUI_CreateChild(url, name, features)
  325. {
  326.     this.childwindow = window.open(url,name,features);
  327. }
  328.  
  329. function LUI_DestroyChild()
  330. {
  331.     if (this.childwindow != null && !this.childwindow.closed)
  332.     {
  333.         if (document.layers)
  334.         { 
  335.             this.childwindow.focus();
  336.             this.childwindow.blur();
  337.             window.focus();
  338.                      
  339.             this.childwindow.close();
  340.             this.childwindow = null;
  341.         } 
  342.         else this.childwindow.close();
  343.     }
  344. }
  345. /*
  346. function GetNewString(sString)
  347. {        
  348.     var sToolList = sString;    
  349.     var retVal = '';
  350.     var toollist = '';
  351.     var toolArr = new Array();
  352.     var verArr = new Array();    
  353.     
  354.     arr1 = sToolList.split(";");
  355.     for(i=0; i<arr1.length-1; i++)
  356.     {
  357.         arr2 = arr1[i].split("#");
  358.         toolArr[i] = arr2[0];
  359.         verArr[i] = arr2[1];        
  360.     }
  361.     
  362.     xp.CreateXML(lui.MAINiXML);    
  363.  
  364.     for (var x=0; x<toolArr.length; x++)
  365.     {     
  366.         retVal = xp.CheckXML2(toolArr[x], g_sOS, "TOOL_MAP");
  367.         if(retVal == 0 || retVal == 1)    toollist += toolArr[x] + "#" + verArr[x] + ";";
  368.         else if(retVal == 'NA') toollist = toollist;
  369.         else toollist += retVal + "#" + verArr[x] + ";";                    
  370.     }
  371.     xp.UnloadXML(xp.xmlHandle);
  372.     
  373.     if(toollist == '') toollist = 'NA';
  374.     return toollist;
  375. }
  376. */
  377. function LUI_Init()
  378.     /*  Initialize any components that require it  */
  379.     ti.Init(this.scenario);
  380.     tu.Init();
  381.     if(document.layers) pc.Init();
  382.     wtui.Init();
  383.     //xp.Init();
  384.     
  385.     /*  If we initializing after a TKM install that we initiated then immediately launch the tool install  */
  386.     if (top.LUI_launch && ti.status == ti.INSTALLED)
  387.     {
  388.         /*  Reset the lui object fields with those we saved earlier  */
  389.         this.toollist = top.LUI_toollist;
  390.         this.exitfunc = top.LUI_exitfunc;
  391.         this.arglist = top.LUI_arglist;
  392.  
  393.         /*  Clear the top variables that we set if the installation is finished  */
  394.         if (ti.status == ti.INSTALLED)
  395.         {
  396.             top.LUI_toollist = '';
  397.             top.LUI_exitfunc = '';
  398.             top.LUI_arglist = '';
  399.             top.LUI_launch = false;
  400.         }
  401.  
  402.         /*  Run the install without any user action required  */
  403.         this.Run();
  404.     }
  405. }
  406.  
  407.  
  408. var lui = new LUI();    //  Create the Link UI Object if it exists
  409. //--></script>